import { Module } from '@nestjs/common'

// 控制器
import { AppController } from './app.controller'

// 服务 ( 提供者 )
import {
  LoggerClassService,
  LoggerService,
  UseValueService,
  UseFactory
} from './logger.service'

@Module({
  // 控制器
  controllers: [
    AppController,
  ],
  // 服务
  providers: [
    {
      provide: LoggerService,
      useClass: LoggerService, // 类提供者 
    },
    LoggerClassService, // 类提供者 简写
    {
      provide: 'StringToken', // 值提供者不能 inject 注入其他 token 令牌对应的提供者
      useValue: new UseValueService(), // 值提供者
    },
    {
      provide: 'FactoryToken',
      inject: ['use_value', 'StringToken'], // 传递的是 token 令牌
      useFactory: (prefix1, prefix2) => new UseFactory(prefix1, prefix2), // 工厂函数提供者
    },


    {
      provide: 'use_value', // 值提供者不能 inject 注入其他 token 令牌对应的提供者
      useValue: '这是一个值提供者'
    },
  ]
})
export class AppModule {

}

